/* Libsylph includes */
#include <sylph/sylmain.h>
#include <sylph/prefs_common.h>
#include <sylph/prefs.h>
#include <sylph/account.h>
#include <sylph/defs.h>

#include "init.h"

int app_init(void) {
    char *mainpath;

    syl_init();
    asprintf(&mainpath, "%s/.E-Mail", getenv("HOME"));
    set_rc_dir(mainpath);
    set_conf_dir();
    prefs_common_read_config();
    account_read_config_all();

    if (folder_read_list() < 0) {
        build_setup_gui();
        return 0;
    } else {
        return 1;
    }
}

void set_conf_dir(void) {
    if (!is_dir_exist(get_rc_dir())) {
        if (make_dir_hier(get_rc_dir()) < 0)
            exit(1);
    }

    MAKE_DIR_IF_NOT_EXIST(get_mail_base_dir());

    CHDIR_EXIT_IF_FAIL(get_rc_dir(), 1);

    MAKE_DIR_IF_NOT_EXIST(get_imap_cache_dir());
    MAKE_DIR_IF_NOT_EXIST(get_news_cache_dir());
    MAKE_DIR_IF_NOT_EXIST(get_mime_tmp_dir());
    MAKE_DIR_IF_NOT_EXIST(get_tmp_dir());
    MAKE_DIR_IF_NOT_EXIST(UIDL_DIR);

    /* remove temporary files */
    remove_all_files(get_tmp_dir());
    remove_all_files(get_mime_tmp_dir());
}
